18 Jun 2018

racket 7.0.0.2 is out

作者:Syntacticlosure

标签:Racket

Racket 7.0.0.2版本最令人激动的功能是local-expand的增强,多了一个#:extend-stop-ids?选项,这意味着alexis在这篇文章 中所想要解决的问题不复存在,我们可以通过一段代码来观察变化:

这是在racket 6.12中运行的代码:

(define-syntax m (syntax-rules ()))

(begin-for-syntax (display (local-expand #'(let-syntax ([a (syntax-rules ())])
                                             (m a))
                                         'expression
                                         (list #'m)
                                         #f
                                         )))

可以看到,宏并没有被完全展开。

但是在新版本中:

(define-syntax m (syntax-rules ()))

(begin-for-syntax (display (local-expand #'(let-syntax ([a (syntax-rules ())])
                                             (m a))
                                         'expression
                                         (list #'m)
                                         #f
                                         #:extend-stop-ids? #f)))

这意味着racket的宏系统更加完善和强大了。